Extraer datos de Yahoo Finance ------------------------------ Existen códigos en R que extraen información de algunas páginas web. Los paquetes ``quantmod`` y ``tseries`` nos ayudan a descargar los históricos de los precios de las acciones directamente desde la página de *Yahoo Finance.* Estos paquetes se deben instalar de la siguiente manera: ``install.packages('quantmod')`` ``install.packages("tseries")`` Para usar las librerías de estos paquetes debemos activarlos en R de la siguiente forma: ``library(quantmod)`` ``library(tseries)`` ``getSymbols`` para descargar precios de acciones ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r library(quantmod) Dentro de esta librería se usa la función ``getSymbols``. Descargar precios con fechas específicas ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ El siguiente ejemplo extrae los precios de las acciones de Netflix y Apple desde el primero de enero de 2015 hasta el 14 de abril de 2020. Note que descarga hasta un día bursátil antes del indicado, que fue el 15 de abril de 2020. .. code:: r getSymbols(c("NFLX","AAPL"), from = "2015-01-01", to = "2020-04-15") .. raw:: html
  1. 'NFLX'
  2. 'AAPL'
El resultado del código anterior muestra que existen dos objetos que almacenan los precios de las acciones descargadas. Estos objetos tienen el nombre de ``NFLX`` y ``AAPL``, que son los nemotécnicos de las acciones. .. code:: r head(NFLX) .. parsed-literal:: NFLX.Open NFLX.High NFLX.Low NFLX.Close NFLX.Volume NFLX.Adjusted 2015-01-02 49.15143 50.33143 48.73143 49.84857 13475000 49.84857 2015-01-05 49.25857 49.25857 47.14714 47.31143 18165000 47.31143 2015-01-06 47.34714 47.64000 45.66143 46.50143 16037700 46.50143 2015-01-07 47.34714 47.42143 46.27143 46.74286 9849700 46.74286 2015-01-08 47.12000 47.83571 46.47857 47.78000 9601900 47.78000 2015-01-09 47.63143 48.02000 46.89857 47.04143 9578100 47.04143 .. code:: r head(AAPL) .. parsed-literal:: AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted 2015-01-02 111.39 111.44 107.35 109.33 53204600 100.21645 2015-01-05 108.29 108.65 105.41 106.25 64285500 97.39318 2015-01-06 106.54 107.43 104.63 106.26 65797100 97.40237 2015-01-07 107.20 108.20 106.70 107.75 40105900 98.76815 2015-01-08 109.23 112.15 108.70 111.89 59364500 102.56307 2015-01-09 112.67 113.25 110.21 112.01 53699500 102.67305 Descargar precios hasta la fecha actual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ El siguiente ejemplo descarga los precios de las acciones de Netflix y Apple desde el primero de enero de 2015 hasta el día que se corre el código, hasta el día de hoy. Esto se hace colocando la fecha del sistema con ``to = Sys.Date()``. .. code:: r getSymbols(c("NFLX","AAPL"), from="2015-01-01", to = Sys.Date()) .. raw:: html
  1. 'NFLX'
  2. 'AAPL'
Los precios descargados se trabajará solo con la columna de los precios ajustados ``.Adjusted`` que es la columna ``6``. De cada uno de los objetos que se descargaron y que contienen los precios de las acciones se deberá extraer sólo la columna de los precios descargados y se guardaran en objeto que se llamará ``precios``. La función ``merge`` une los vectores en uno solo objeto que sería una matriz. Matriz de precios. ~~~~~~~~~~~~~~~~~~ .. code:: r precios = merge( NFLX[,6], AAPL[,6]) .. code:: r precios = ts(precios) .. code:: r head(precios) .. raw:: html
A matrix: 6 × 2 of type dbl
NFLX.AdjustedAAPL.Adjusted
49.84857100.21645
47.31143 97.39318
46.50143 97.40237
46.74286 98.76815
47.78000102.56307
47.04143102.67305
.. code:: r dim(precios) .. raw:: html
  1. 1337
  2. 2
De cada acción se descargó 1337 filas que corresponden a 1337 precios. Gráfico del precio ~~~~~~~~~~~~~~~~~~ .. code:: r plot(precios, main = "Precios") .. image:: output_22_0.png :width: 420px :height: 420px Matriz de rendimientos ~~~~~~~~~~~~~~~~~~~~~~ .. code:: r rendimientos = diff(log(precios)) .. code:: r head(rendimientos) .. raw:: html
A matrix: 6 × 2 of type dbl
NFLX.AdjustedAAPL.Adjusted
-0.052237977-2.857619e-02
-0.017268873 9.438614e-05
0.005178495 1.392460e-02
0.021945626 3.770276e-02
-0.015578461 1.071722e-03
-0.032280783-2.494930e-02
.. code:: r dim(rendimientos) .. raw:: html
  1. 1336
  2. 2
.. code:: r head(rendimientos) .. raw:: html
A matrix: 6 × 2 of type dbl
NFLX.AdjustedAAPL.Adjusted
-0.052237977-2.857619e-02
-0.017268873 9.438614e-05
0.005178495 1.392460e-02
0.021945626 3.770276e-02
-0.015578461 1.071722e-03
-0.032280783-2.494930e-02
Gráfico de rendimientos ~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r plot(rendimientos, main = "Rendimientos") .. image:: output_29_0.png :width: 420px :height: 420px ``tseries`` para descargar precios de acciones ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r library(quantmod) .. code:: r library(tseries) Dentro de esa librería se usa la función ``get.hist.quote``. A diferencia que la función ``getSymbols``, se debe repetir el código por cada acción que se quiera descargar y es posible sólo descargar la columna del precio ajustado con ``quote = "AdjClose"``. Descargar precios con fechas específicas ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ El siguiente ejemplo extrae los precios de las acciones de Netflix y Apple desde el primero de enero de 2015 hasta el 14 de abril de 2020. Note que descarga hasta un día bursátil antes del indicado, que fue el 15 de abril de 2020. .. code:: r NFLX = get.hist.quote(instrument = "NFLX", start = as.Date("2015-01-01"), end= as.Date("2020-04-15"), quote = "AdjClose") .. parsed-literal:: time series starts 2015-01-02 time series ends 2020-04-14 .. code:: r head(NFLX) .. parsed-literal:: Adjusted 2015-01-02 49.84857 2015-01-05 47.31143 2015-01-06 46.50143 2015-01-07 46.74286 2015-01-08 47.78000 2015-01-09 47.04143 .. code:: r AAPL = get.hist.quote(instrument = "AAPL", start = as.Date("2015-01-01"), end= as.Date("2020-04-15"), quote = "AdjClose", provider = c("yahoo")) .. parsed-literal:: time series starts 2015-01-02 time series ends 2020-04-14 .. code:: r head(AAPL) .. parsed-literal:: Adjusted 2015-01-02 100.21645 2015-01-05 97.39318 2015-01-06 97.40237 2015-01-07 98.76815 2015-01-08 102.56307 2015-01-09 102.67305 Descargar precios hasta la fecha actual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ El siguiente ejemplo descarga los precios de las acciones de Netflix y Apple desde el primero de enero de 2015 hasta el día que se corre el código, hasta el día de hoy. Esto se hace colocando la fecha del sistema con ``to = Sys.Date()``. .. code:: r NFLX = get.hist.quote(instrument = "NFLX", start = as.Date("2015-01-01"), end = Sys.Date(), quote = "AdjClose") .. parsed-literal:: time series starts 2015-01-02 time series ends 2020-04-24 .. code:: r AAPL = get.hist.quote(instrument = "AAPL", start = as.Date("2015-01-01"), end = Sys.Date(), quote = "AdjClose") .. parsed-literal:: time series starts 2015-01-02 time series ends 2020-04-24 Matriz de precios. ~~~~~~~~~~~~~~~~~~ .. code:: r precios = merge( NFLX, AAPL) .. code:: r precios = ts(precios) .. code:: r head(precios) .. raw:: html
A matrix: 6 × 2 of type dbl
Adjusted.NFLXAdjusted.AAPL
49.84857100.21645
47.31143 97.39318
46.50143 97.40237
46.74286 98.76815
47.78000102.56307
47.04143102.67305
.. code:: r dim(precios) .. raw:: html
  1. 1337
  2. 2
De cada acción se descargó 1337 filas que corresponden a 1337 precios. Gráfico del precio ~~~~~~~~~~~~~~~~~~ .. code:: r plot(precios, main = "Precios") .. image:: output_52_0.png :width: 420px :height: 420px Matriz de rendimientos. ~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r rendimientos = diff(log(precios)) .. code:: r head(rendimientos) .. raw:: html
A matrix: 6 × 2 of type dbl
Adjusted.NFLXAdjusted.AAPL
-0.052237977-2.857619e-02
-0.017268873 9.438614e-05
0.005178495 1.392460e-02
0.021945626 3.770276e-02
-0.015578461 1.071722e-03
-0.032280783-2.494930e-02
Se observa que los nombres de la matriz de rendimientos tienen los mismos nombres que la matriz de precios. .. code:: r dim(rendimientos) .. raw:: html
  1. 1336
  2. 2
Gráfico de rendimientos ~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r plot(rendimientos, main = "Rendimientos") .. image:: output_59_0.png :width: 420px :height: 420px